home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / workbench / libs / newlooklib.lha / newlook / createradiobutton.c < prev    next >
C/C++ Source or Header  |  1993-10-24  |  4KB  |  121 lines

  1. /*
  2.  *  CREATERADIOBUTTON.C
  3.  */
  4.  
  5. #include "newlook.h"
  6.  
  7. extern void CopyMem(APTR,APTR,ULONG);
  8.  
  9. static SHORT radioled_pairs[10*2]= {
  10.   5,2,
  11.  11,2,  /* ..1111111111112.. */
  12.  12,3,  /* .11...........22. */
  13.   4,3,  /* 11...3333333...22 */
  14.   4,4,  /* 11..333333333..22 */
  15.  12,4,  /* 11..333333333..22 */
  16.  12,5,  /* 11..333333333..22 */
  17.   4,5,  /* 11...3333333...22 */
  18.   5,6,  /* .11...........22. */
  19.  11,6   /* ..1222222222222.. */
  20. };
  21.  
  22. static SHORT radioborder_pairs[2][2*9]= {
  23.      2,0,  0,2,  0,6,  2,8,  2,7,  1,6,  1,2,  3,0, 13,0,
  24.     14,8, 16,6, 16,2, 14,0, 14,1, 15,2, 15,6, 13,8,  3,8 
  25. };
  26.  
  27. struct Gadget *CreateRadioButton(x,y,pn,id)
  28. SHORT x,y;
  29. BOOL pn;
  30. USHORT id;
  31. {
  32.   struct Gadget *g;
  33.   struct Border *b[2][3];  /* b[0][x]= unselected, b[1][x]= selected */
  34.  
  35.   ULONG UserHandle= SetNewLookHandle(PRIVATE_HANDLE);
  36.  
  37.   if(g= (struct Gadget *)SmartAllocate(GADGETSIZE))
  38.   {
  39.     if(b[0][0]= (struct Border *)SmartAllocate(BORDERSIZE))
  40.     {
  41.       if(b[0][1]= (struct Border *)SmartAllocate(BORDERSIZE))
  42.       {
  43.         if(b[0][2]= (struct Border *)SmartAllocate(BORDERSIZE))
  44.         {
  45.           if(b[1][0]= (struct Border *)SmartAllocate(BORDERSIZE))
  46.           {
  47.             if(b[1][1]= (struct Border *)SmartAllocate(BORDERSIZE))
  48.             {
  49.               if(b[1][2]= (struct Border *)SmartAllocate(BORDERSIZE))
  50.               {
  51.                 b[0][0]->LeftEdge   = b[1][0]->LeftEdge = 0;
  52.                 b[0][0]->TopEdge    = b[1][0]->TopEdge  = 0;
  53.                 b[0][0]->BackPen    = b[1][0]->BackPen  = 0;
  54.                 b[0][0]->Count      = b[1][0]->Count    = 10;
  55.                 b[0][0]->XY         = b[1][0]->XY       = radioled_pairs;
  56.  
  57.                 b[0][0]->FrontPen   = 0;
  58.                 b[0][0]->DrawMode   = JAM2;
  59.                 b[0][0]->NextBorder = b[0][1];
  60.  
  61.                 b[1][0]->FrontPen   = 3;
  62.                 b[1][0]->DrawMode   = JAM1;
  63.                 b[1][0]->NextBorder = b[1][1];
  64.  
  65.  
  66.                 b[0][1]->LeftEdge   = b[0][2]->LeftEdge = 0;
  67.                 b[0][1]->TopEdge    = b[0][2]->TopEdge  = 0;
  68.                 b[0][1]->BackPen    = b[0][2]->BackPen  = 0;
  69.                 b[0][1]->DrawMode   = b[0][2]->DrawMode = JAM1;
  70.                 b[0][1]->Count      = b[0][2]->Count    = 9;
  71.  
  72.                 b[0][1]->XY         = radioborder_pairs[0];
  73.                 b[0][2]->XY         = radioborder_pairs[1];
  74.  
  75.                 CopyMem((APTR)b[0][1], (APTR)b[1][1], (ULONG)BORDERSIZE);
  76.                 CopyMem((APTR)b[0][2], (APTR)b[1][2], (ULONG)BORDERSIZE);
  77.  
  78.                 b[0][1]->FrontPen   = 2;
  79.                 b[0][1]->NextBorder = b[0][2];
  80.  
  81.                 b[0][2]->FrontPen   = 1;
  82.                 b[0][2]->NextBorder = (struct Border *)NULL;
  83.  
  84.                 b[1][1]->FrontPen   = 1;
  85.                 b[1][1]->NextBorder = b[1][2];
  86.  
  87.                 b[1][2]->FrontPen   = 2;
  88.                 b[1][2]->NextBorder = (struct Border *)NULL;
  89.  
  90.                 g->NextGadget    = (struct Gadget *)NULL;
  91.                 g->LeftEdge      = x;
  92.                 g->TopEdge       = y;
  93.                 g->Width         = RADIOBUTTON_WIDTH;
  94.                 g->Height        = RADIOBUTTON_HEIGHT;
  95.                 g->Flags         = pn ? GADGHIMAGE|SELECTED : GADGHIMAGE;
  96.                 g->Activation    = GADGIMMEDIATE|RELVERIFY|TOGGLESELECT;
  97.                 g->GadgetType    = BOOLGADGET;
  98.                 g->GadgetRender  = (APTR)b[0][0];
  99.                 g->SelectRender  = (APTR)b[1][0];
  100.                 g->GadgetText    = (struct IntuiText *)NULL;
  101.                 g->MutualExclude = (LONG)0L;
  102.                 g->SpecialInfo   = (APTR)NULL;
  103.                 g->GadgetID      = id;
  104.                 g->UserData      = (APTR)NULL;
  105.  
  106.                 MakePrivateHandlePublic(UserHandle);
  107.                 return g;
  108.               }
  109.             }
  110.           }
  111.         }
  112.       }
  113.     }
  114.   }
  115.   if(UserHandle != PRIVATE_HANDLE)
  116.   { SmartFreeAll(PRIVATE_HANDLE);
  117.     (void)SetNewLookHandle(UserHandle);
  118.   }
  119.   return (struct Gadget *)NULL;
  120. }
  121.